home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Everything For A Hacker
/
19990506-[HACK].iso
/
SECURE
/
CRYPT
/
GOST.ZIP
/
IMITO.ASM
< prev
next >
Wrap
Assembly Source File
|
1998-03-06
|
5KB
|
127 lines
;-----------------------------------------------------
; éδαáí«Γ¬á ¿¼¿óßΓáó¬¿ ñ½∩ ¼áßß¿óá ñá¡¡δσ ß«ú½áß¡«
; ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
; --------> ñ½∩ 16-í¿Γ«óδσ »α«µÑßß«α«ó 80x86 <--------
; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
;-----------------------------------------------------
; Åáαá¼ÑΓαδ »α¿ ó맮óÑ »ÑαÑñáεΓß∩ ó ßΓφ¬Ñ :
; æ¼ÑΘÑ¡¿Ñ ÉẼÑα Å Ç É Ç î à Æ É
;NEAR FAR
; 2 4 4 FAR-áñαÑß ¬½ετá (è)
; 6 8 4 FAR-áñαÑß ¿ßσ«ñ¡«⌐ ¬«¼í¿¡áµ¿¿ (êè)
; 10 12 4 FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡ (Æç)
; 14 16 4 FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ (ì)
; 18 20 2 τ¿ß½« 8-íá⌐Γ«óδσ í½«¬«ó
;*20 22 2 ñ½¿¡á ¬½ετá ó ñó«⌐¡δσ ß½«óáσ
; (ß¼. óáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩)
;-----------------------------------------------------
; ç¡áτÑ¡¿∩ »áαá¼ÑΓα«ó »α¿ óδσ«ñÑ:
; - áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩ π¬áºδóδÑΓ ¡á »Ñαóδ⌐ íá⌐Γ
; »«ß½Ñ »«ß½Ññ¡Ñú« «íαáí«Γá¡¡«ú« í½«¬á;
; - áñαÑßá ¬½ετá, Γáí½¿µδ ºá¼Ñ¡ ¿ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡á-
; µ¿¿ ¡Ñ ¿º¼Ñ¡¿½¿ß∞;
; - «í½áßΓ∞ ¬«¡Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿ ß«ñÑαª¿Γ º¡áτÑ¡¿Ñ,
; ß ¬«Γ«αδ¼ ¡áñ« óδºóáΓ∞ Σπ¡¬µ¿ε ñ½∩ »α«ñ«½ªÑ¡¿∩;
; - ßτÑΓτ¿¬ í½«¬«ó αáóÑ¡ 0;
; - αÑú¿ßΓα EAX ß«ñÑαª¿Γ ¼½áñΦÑÑ ñó«⌐¡«Ñ ß½«ó« ¬«¡-
; Γα«½∞¡«⌐ ¬«¼í¿¡áµ¿¿, ¿ß»«½∞ºπѼ«Ñ «íδτ¡« ¬á¬ ¿¼¿-
; Γ«óßΓáó¬á,τΓ« ß««ΓóÑΓßΓóπÑΓ ó«ºóαáΓπ º¡áτÑ¡¿∩ Γ¿»á
; Item, «»αÑñѽѡ¡«ú« ó Σá⌐½Ñ gost.h ¬á¬
; unsigned long.
;-----------------------------------------------------
; êß»«½∞ºπѼδÑ αÑú¿ßΓαδ : óßÑ
;------------------------------------------------------
; éáα¿á¡Γδ ¬«ñ¿α«óá¡¿∩
; - æ¿¼ó«½ KeySize:
; -- æ¿¼ó«½ ¡Ñ«»αÑñѽѡ:Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ αáºóÑα¡πΓδ⌐
; ¬½ετ αẼÑα«¼ ó 16 ¬½ετÑóδσ φ½Ñ¼Ñ¡Γ«ó;
; -- æ¿¼ó«½ «»αÑñѽѡ ¿ ¿¼ÑÑΓ τ¿ß½«ó«Ñ º¡áτÑ¡¿Ñ:
; Σπ¡¬µ¿∩ ¿ß»«½∞ºπÑΓ ¬½ετ π¬áºá¡¡«ú« αẼÑαá (ó
; ¬½ετÑóδσ φ½Ñ¼Ñ¡Γáσ);
; -- æ¿¼ó«½ «»αÑñѽѡ, ¿¼ÑÑΓ »πßΓ«Ñ º¡áτÑ¡¿Ñ:
; αẼÑα ¬½ετá »ÑαÑñáÑΓß∩ ¬á¬ »«ß½Ññ¡¿⌐ »áαá¼ÑΓα
; Σπ¡¬µ¿¿.
;-----------------------------------------------------
;
wptr EQU <word ptr>
;
IFNDEF KeySize
_keysize EQU 16 ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ELSE
IFDIF KeySize,<>
_keysize EQU KeySize ; φ½Ñ¼Ñ¡Γ«ó ó ¬½ετÑ
ENDIF
ENDIF
;
.model small,C
.code $gost
extrn gost:near
imito proc
public imito
; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
a=8 ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
IF (TYPE imito) EQ 0FFFEh
a=a+2 ; Ñß½¿ gamma - far-»α«µÑñπαá
ENDIF
; çáñáѼ ß¼ÑΘÑ¡¿Ñ áαúπ¼Ñ¡Γ«ó ó ßΓφ¬Ñ
;
key= 2+a
syn= 6+a
chg= 10+a
tar= 14+a
len= 18+a
IFNDEF _keysize
keylen= 20+a
ENDIF
;
; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
push BP
push DS ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
push SI
push DI
; çáúαπªáѼ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ «Γ »α«Φ½«ú« αáºá
mov BP,SP ; ¡áßΓα«⌐¬á ßΓφ¬«ó«ú« ¬áñαá
lds SI,syn[BP] ; DS:SI -> ß¿¡σα«»«»δ½¬á
mov AX,[SI] ; AX <= ¼½áñΦÑÑ ß½«ó« S1
mov DX,2[SI] ; DX <= ßΓáαΦÑÑ ß½«ó« S1
mov DI,4[SI] ; DI <= ¼½áñΦÑÑ ß½«ó« S2
mov CX,6[SI] ; CX <= ßΓáαΦÑÑ ß½«ó« S2
lds BX,chg[BP] ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
; ä«íáó½∩Ѽ í½«¬ ñá¡¡δσ
circle: les SI,tar[BP] ; DS:SI<-áñαÑß ¡áº¡áτÑ¡¿∩
xor AX,ES:[SI] ; âá¼¼¿απѼ
xor DX,ES:2[SI] ; 8-íá⌐Γ¡δ⌐
xor DI,ES:4[SI] ; í½«¬
xor CX,ES:6[SI] ; ñá¡¡δσ
; â«Γ«ó¿¼ αÑú¿ßΓαδ ¿ óδºδóáѼ µ¿¬½ 32-ç
les SI,key[BP] ; ES:SI <- áñαÑß ¬½ετá
IFDEF _keysize
mov BP,CX ; BP <- ßΓáαΦÑÑ ß½«ó« S2
mov CX,_keysize ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
ELSE
mov BP,keylen[BP];CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
xchg BP,CX ; BP <- ßΓáαΦÑÑ ß½«ó« S2
ENDIF
call gost ; Φáú »α«ßΓ«⌐ ºá¼Ñ¡δ
mov CX,BP ; CX <- ßΓáαΦÑÑ ß½«ó« S2
mov BP,SP ; BP <- ßΓѬ«óδ⌐ ¬áñα
add wptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
dec wptr len[BP]; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
jnz circle ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
; ºá¡«ß¿¼ ¡«ó«Ñ º¡áτÑ¡¿Ñ ¬«¼í¿¡áµ¿¿ ¡á Ñú« ¼ÑßΓ«
; (φΓ« ¡πª¡« ñ½∩ «íαáí«Γ¬¿ ¼áßß¿óá ñá¡¡δσ τáßΓ∩¼¿)
les SI,syn[BP] ; DS:SI -> ß¿¡σα«»«ß佬á
mov ES:[SI],AX ; ºá¡«ß¿¼ ¡«óδÑ
mov ES:2[SI],DX ; º¡áτÑ¡¿∩ S1,S2
mov ES:4[SI],DI ; ¡á ¿σ
mov ES:6[SI],CX ; ¼ÑßΓ« !!!
; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
pop DI
pop SI
pop DS
pop BP
ret
imito endp
end